package jsontool

import (
	"encoding/json"
	"fmt"
	"source-admin-go/pkg/e"
)

func JsonStringToStruct(jsonStr string, target interface{}) error {
	tempStr := jsonStr
	if tempStr == "" {
		tempStr = `{}`
	}
	err := json.Unmarshal([]byte(tempStr), target)
	if err != nil {
		e.ErrorLogPrintln(fmt.Sprintf("%v", err.Error()))
	}
	return err
}

func JsonStringToMap(jsonStr string, target map[string]interface{}) error {
	err := json.Unmarshal([]byte(jsonStr), &target)
	if err != nil {
		e.ErrorLogPrintln(fmt.Sprintf("%v", err.Error()))
	}
	return err
}

func StructToJsonString(target interface{}) (string, error) {
	result, err := json.Marshal(target)
	if err != nil {
		e.ErrorLogPrintln(fmt.Sprintf("%v", err.Error()))
	}
	return string(result), err
}

func MapToJsonString(target map[string]interface{}) (string, error) {
	result, err := json.Marshal(target)
	if err != nil {
		e.ErrorLogPrintln(fmt.Sprintf("%v", err.Error()))
	}
	return string(result), err
}
